/**
 * 法一： 类的方式
 * import { makeObservable, observable,action } from 'mobx';
class MyStore {
    count = 0
    constructor() {
        makeObservable(this, {
            count: observable,
            increment: action,
        })
        this.increment = this.increment.bind(this)
    }
    increment() {
        console.log('----increment-----',this.count)
        this.count++
    }
    decrement() {
        this.count--
    }
}
const store = new MyStore()
 */
/**
 * 法二：对象的方式 runInAction
 * runInAction作用是将一组操作封装在一个事务中，这个事务中的所有操作会在一个新的事务中执行，这样可以避免多次触发reaction
 */
import { observable,action } from "mobx"

const store = observable({
    count: 0,
    increment() {
        console.log('----increment-----',this.count)
        this.count++
    },
    decreament() {
        setTimeout(() => {
            this.count--
        }, 1000)
    }
}, {
    /**
     * bound: true 表示这个函数的 this 永远指向这个 store 对象
     */
    increment: action.bound,
    decreament: action.bound
})
export default store